
import gmpy2
import libnum

n1 = 21655617838358037895534605162358784326495251462447218485102155997156394132443891540203860915433559917314267455046844360743623050975083617915806922096697304603878134295964650430393375225792781804726292460923708890722827436552209016368047420993613497196059326374616217655625810171080545267058266278112647715784756433895809757917070401895613168910166812566545593405362953487807840539425383123369842741821260523005208479361484891762714749721683834754601596796707669718084343845276793153649005628590896279281956588607062999398889314240295073524688108299345609307659091936270255367762936542565961639163236594456862919813549
n2 = 24623016338698579967431781680200075706241014384066250660360949684385831604822817314457973559632215801205780786144608311361063622813017396858888436529116737754653067203843306015767091585697803364656624926853551997229897087731298797904208292585562517602132663331748784390752958757661484560335406769204491939879324079089140420467301773366050084810282369044622442784113688062220370531522036512803461607049619641336524486507388232280683726065679295742456158606213294533956580462863488082028563360006966912264908424680686577344549034033470952036766850596897062924137344079889301948258438680545785139118107899367307031396309
c1 = 2615722342860373905833491925692465899705229373785773622118746270300793647098821993550686581418882518204094299812033719020077509270290007615866572202192731169538843513634106977827187688709725198643481375562114294032637211892276591506759075653224150064709644522873824736707734614347484224826380423111005274801291329132431269949575630918992520949095837680436317128676927389692790957195674310219740918585437793016218702207192925330821165126647260859644876583452851011163136097317885847756944279214149072452930036614703451352331567857453770020626414948005358547089607480508274005888648569717750523094342973767148059329557
c2 = 6769301750070285366235237940904276375318319174100507184855293529277737253672792851212185236735819718282816927603167670154115730023644681563602020732801002035524276894497009910595468459369997765552682404281557968383413458466181053253824257764740656801662020120125474240770889092605770532420770257017137747744565202144183642972714927894809373657977142884508230107940618969817885214454558667008383628769508472963039551067432579488899853537410634175220583489733111861415444811663313479382343954977022383996370428051605169520337142916079300674356082855978456798812661535740008277913769809112114364617214398154457094899399
e1=  377312346502536339265
e2=  561236991551738188085


p=libnum.gcd(n1,n2)
q1=n1//p
q2=n2//p
#因为e phi不互素，需要用到中国剩余定理构建一个新的rsa
#https://blog.csdn.net/luochen2436/article/details/128012748
phi1=(p-1)*(q1-1)
phi2=(p-1)*(q2-1)
t=35
c1=pow(c1,libnum.invmod(e1//35,phi1),n1)
c2=pow(c2,libnum.invmod(e2//35,phi2),n2)
m1=pow(c1,1,q1)
m2=pow(c2,1,q2)
m3=pow(c1*c2,1,p)
c=libnum.solve_crt([m1,m2,m3],[q1,q2,p])
phi=(q1-1)*(q2-1)
m=pow(c,libnum.invmod(7,phi),q1*q2)
print(m)
m1=libnum.nroot(m,5)
print(libnum.n2s(int(m1)))



